// 布尔
let isDown: boolean = false;

// 数字
let age: number = 18;

// 字符串
let myName: string = "张三";

// 数组
let list: number[] = [1, 2, 3];

// 元组
let tuple: [string, number] = ["张三", 18];

// 枚举
enum Color { //默认情况下，从0开始为元素编号。
    Red,
    Green,
    Blue,
}
let c: Color = Color.Green;

// any
let notSure: any = 4;
notSure = "maybe a string instead";
notSure = false; // okay, definitely a boolean

// void
function warnUser(): void {
    console.log("This is my warning message");
}

// null 和 undefined , undefined和null两者各自有自己的类型分别叫做undefined和null
let u: undefined = undefined;
let n: null = null;
// 默认情况下 null 和 undefined 是所有类型的子类型。

// never
function error(message: string): never {
    throw new Error(message);
}

// object
declare function create(o: object | null): void;
create({ prop: 0 }); // OK
create(null); // OK
// create(42); // Error
// create("string"); // Error
// create(false); // Error
// create(undefined); // Error
// object表示非原始类型，也就是除number，string，boolean，symbol，null或undefined之外的类型。

// 类型断言
let someValue: any = "this is a string";
let strLength: number = (<string>someValue).length;
// as语法
let someValue2: any = "this is a string";
let strLength2: number = (someValue as string).length;
